/*
 * Copyright (C) 2012 Rothens
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package rpg.entities;

import rpg.Location;
import rpg.Maps;
import rpg.entities.eventhandlers.EventHandler;
import rpg.gfx.Bitmap;
import rpg.gfx.Screen;

/**
 * rothens.tumblr.com
 * @author Rothens
 */
public abstract class Tile extends Entity {
	private Location loc;
	private Maps.Map map;
        private EventHandler eh = null;
        private boolean passable = false;
	private int xRenderOffset = -10;
	private int yRenderOffset = -10;
	
	public boolean isPassable() {
            return passable;
        }
	
	public Tile() {
	}
	
	public abstract Bitmap getDrawGraphics();
	
	public boolean isInView(Screen.Renderable r){
		int diff = 32;
		
		if(r.topLeft.getX() - diff < getLoc().getX() && r.bottomRight.getX() + diff > getLoc().getX()
			&& r.topLeft.getY() - diff < getLoc().getY() && r.bottomRight.getY() + diff > getLoc().getY()){
			setxRenderOffset(getLoc().getX() - r.topLeft.getX());
			setyRenderOffset(getLoc().getY() - r.topLeft.getY());
			return true;
		}
		return false;
	}

        public Location getLoc() {
            return loc;
        }

        public void setLoc(Location loc) {
            this.loc = loc;
        }

        public Maps.Map getMap() {
            return map;
        }

        public void setMap(Maps.Map map) {
            this.map = map;
        }

        public void setPassable(boolean passable) {
            this.passable = passable;
        }

        public int getxRenderOffset() {
            return xRenderOffset;
        }

        public void setxRenderOffset(int xRenderOffset) {
            this.xRenderOffset = xRenderOffset;
        }

        public int getyRenderOffset() {
            return yRenderOffset;
        }

        public void setyRenderOffset(int yRenderOffset) {
            this.yRenderOffset = yRenderOffset;
        }
	public Tile(Location loc){
		this.loc = loc.getCentered();
	}
	
}
